<?php
namespace app\admin\controller;

use think\Db;
use think\Request;

class Auser extends AdminController
{
//    管理员列表
    public function UserList()
    {
        // 查询 管理员数据库数据
        $list_admin = Db::table('zz_admin')->order('zz_admin_id','asc')->select();
        
        // 查询角色表数据  将普通管理员的id取出 ， 为设默认管理员做准备
        $list_role_def = Db::table('zz_role')->field('zz_role_id')->where('zz_role_name',"后台首页")->find();

        // 查询 管理员相对应的 角色ID
        for ($i=0;$i<sizeof($list_admin);$i++) {
            $list_role[$i] = Db::table('zz_admin_role')
                       ->where('zz_admin_id',$list_admin[$i]['zz_admin_id'])
                       ->select();
            if (empty($list_role[$i])){
                $list_role[$i][0]['zz_admin_id'] = $list_admin[$i]['zz_admin_id'];
                $list_role[$i][0]['zz_role_id'] = $list_role_def['zz_role_id'];

                // 将此数据 添加到 管理员_角色数据库
                $data['zz_admin_id'] = $list_role[$i][0]['zz_admin_id'];
                $data['zz_role_id'] = $list_role[$i][0]['zz_role_id'];
                Db::table('zz_admin_role')->insert($data);
            }
        }

        // 查询 所有 状态为可用得角色
        $list_role_all = Db::table('zz_role')
                        ->where('zz_role_status',1)
                        ->select();
        
        // 将所有角色名 嵌入
        for ($i=0;$i<sizeof($list_role);$i++){
            for ($j=0;$j<sizeof($list_role[$i]);$j++){
                for ($k=0;$k<sizeof($list_role_all);$k++){
                    if ($list_role[$i][$j]['zz_role_id'] == $list_role_all[$k]['zz_role_id']){
                        $list_role[$i][$j]['zz_role_name'] =  $list_role_all[$k]['zz_role_name'];
                    }
                }
            }
        }
        
        // 将角色名 嵌入 到 管理员 数组中
        for ($i=0;$i<sizeof($list_role);$i++){
            for ($j=0;$j<sizeof($list_role[$i]);$j++){
                for ($k=0;$k<sizeof($list_admin);$k++){
                    if ($list_role[$i][$j]['zz_admin_id'] == $list_admin[$k]['zz_admin_id']){
                        $list_admin[$k]['zz_role_name'][] =  $list_role[$i][$j]['zz_role_name'];
                    }
                }
            }
        }

        // 数据总条数
        $num = sizeof($list_admin);

        return view('adminuser/user-list',[
            'list_admin' => $list_admin,
            'num' => $num
        ]);
    }

//    添加管理员
    public function UserAdd()
    {
        // 查询角色 为普通管理员的 信息
        $list_role = Db::table('zz_role')
                    ->where('zz_role_name',"后台首页")
                    ->select();

        return view('adminuser/user-add',[
            'list_role' => $list_role
        ]);
    }

//    添加管理员更新数据
    public function UserDoAdd(Request $request)
    {
        $name = input('name');
        $tel = input('phone');
        $password = input('pass');
        $time = date('Ymd');
        $data = [];
        $data['zz_admin_name'] = $name;
        $data['zz_admin_tel'] = $tel;
        $data['zz_admin_password'] = $password;
        $data['zz_admin_time'] = $time;

        // 将数据添加到 admin 数据库
        Db::table('zz_admin')->insert($data);

        $res['status'] = 1;
         return $res;
    }

//    编辑管理员
    public function UserEdit($id)
    {
        // 通过id 查询当前管理员得基本信息
        $list_admin = Db::table('zz_admin')
                    ->where('zz_admin_id',$id)
                    ->find();

        // 查询所有 状态为1 得角色信息 （1 为可用 0 为禁用）
        $list_role = Db::table('zz_role')
                    ->where('zz_role_status',1)
                    ->select();

        // 通过用户id 查询当前用户所拥有id
        $list_admin_role_id = Db::table('zz_admin_role')
                            ->where('zz_admin_id',$id)
                            ->select();

        // 定义一个标记 用来标记 当前管理员所拥有得角色 将 zz_role_status 改为 3
        for ($i=0; $i < sizeof($list_admin_role_id); $i++) { 
            for ($j=0; $j < sizeof($list_role); $j++) { 
                if ($list_role[$j]['zz_role_id'] == $list_admin_role_id[$i]['zz_role_id']) {
                    $list_role[$j]['zz_role_status'] = 3;
                }
            }
        }

        return view('adminuser/user-edit',[
            'list_admin' => $list_admin,
            'list_role' => $list_role
        ]);
    }

//    编辑管理员更新数据
    public function UserDoEdit(Request $request)
    {
        // 获取 管理员 信息
        $id = input('id','0','int');
        $name = input('name');
        $phone = input('phone');
        $pass = input('pass');
        $data = [];
        $data['zz_admin_name'] = $name;
        $data['zz_admin_tel'] = $phone;
        $data['zz_admin_password'] = $pass;

        Db::table('zz_admin')->where('zz_admin_id',$id)->update($data);

        // 获取管理员角色信息
        $likeAll = input('like/a');
        $likes = array_keys($likeAll);

        Db::table('zz_admin_role')->where('zz_admin_id',$id)->delete();

        $like = [];
        $like['zz_admin_id'] = $id;
        for ($i=0; $i < sizeof($likes); $i++) { 
            $like['zz_role_id'] = $likes[$i];
            Db::table('zz_admin_role')->insert($like);
        }

        $res = [];
        $res['status'] = 1;
        return json($res);
    }


    // 管理员停用
    public function UserStatusDown()
    {
        // 获取 管理员id
        $id = input('id');
        
        // 查询 管理员当前状态
        $data = array();
        $data['zz_admin_status'] = 2;
        Db::table('zz_admin')->where('zz_admin_id',$id)->update($data);

        $res = [];
        $res['status'] = 1;
        return json($res);
    }

    // 管理员启用
    public function UserStatusUp()
    {
        // 获取 管理员id
        $id = input('id');
        
        // 查询 管理员当前状态
        $data = array();
        $data['zz_admin_status'] = 1;
        Db::table('zz_admin')->where('zz_admin_id',$id)->update($data);

        $res = [];
        $res['status'] = 1;
        return json($res);
    }










}